Ext.onReady(function() {
	var Supplier = Ext.data.Record.create([{
				name : 'id',
				type : 'number'
			}, {
				name : 'supType',
				type : 'string'
			}, {
				name : 'supName',
				type : 'string'
			}, {
				name : 'contact',
				type : 'string'
			}, {
				name : 'post',
				type : 'string'
			}, {
				name : 'tel1',
				type : 'string'
			}, {
				name : 'tel2',
				type : 'string'
			}, {
				name : 'fax',
				type : 'string'
			}, {
				name : 'email',
				type : 'string'
			}, {
				name : 'item',
				type : 'string'
			}, {
				name : 'remark',
				type : 'string'
			}, {
				name : 'cooperate',
				type : 'string'
			}, {
				name : 'level',
				type : 'string'
			}]);

	// 定义表格数据源
	var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : '../supp/search' + getSuffixRd()
						}),
				reader : new Ext.data.JsonReader({
							totalProperty : 'totalCount',
							root : 'list'
						}, [{
									name : 'id'
								}, {
									name : 'supType'
								}, {
									name : 'supName'
								}, {
									name : 'contact'
								}, {
									name : 'post'
								}, {
									name : 'tel1'
								}, {
									name : 'tel2'
								}, {
									name : 'fax'
								}, {
									name : 'email'
								}, {
									name : 'item'
								}, {
									name : 'remark'
								}, {
									name : 'cooperate'
								}, {
									name : 'level'
								}]),
				autoLoad : {
					params : {
						start : 0,
						limit : 20
					}
				}
			});
	var number = 20;
	var numberText = new Ext.form.TextField({
				id : 'numberText',
				width : 60,
				emptyText : '每页条数',
				// 激活键盘事件
				enableKeyEvents : true,
				listeners : {
					specialKey : function(field, e) {
						if (e.getKey() == Ext.EventObject.ENTER) {// 响应回车
							bbar.pageSize = parseInt(numberText.getValue());
							number = parseInt(numberText.getValue());
							store.reload({
										params : {
											start : 0,
											limit : bbar.pageSize
										}
									});
						}
					}
				}
			});
	var bbar = new Ext.PagingToolbar({
				pageSize : number,
				store : store,
				displayInfo : true,
				displayMsg : '显示{0}条到{1}条,共{2}条',
				emptyMsg : "没有符合条件的记录",
				items : ['-', '&nbsp;&nbsp;', numberText]
			});
	var editor = new Ext.ux.grid.RowEditor({
				saveText : '保存',
				cancelText : '取消',
				clicksToEdit : 2
			});
	editor.on({
				scope : this,
				afteredit : function(roweditor, changes, record, rowIndex) {
					var datas = record.data;
					var suppId = record.data.id;
					var supType = Ext.isEmpty(changes.supType)
							? datas.supType
							: changes.supType;
					var supName = Ext.isEmpty(changes.supName)
							? datas.supName
							: changes.supName;
					var contact = Ext.isEmpty(changes.contact)
							? datas.contact
							: changes.contact;
					var post = Ext.isEmpty(changes.post)
							? datas.post
							: changes.post;
					var tel1 = Ext.isEmpty(changes.tel1)
							? datas.tel1
							: changes.tel1;
					var tel2 = Ext.isEmpty(changes.tel2)
							? datas.tel2
							: changes.tel2;
					var fax = Ext.isEmpty(changes.fax)
							? datas.fax
							: changes.fax;
					var email = Ext.isEmpty(changes.email)
							? datas.email
							: changes.email;
					var item = Ext.isEmpty(changes.item)
							? datas.item
							: changes.item;
					var remark = Ext.isEmpty(changes.remark)
							? datas.remark
							: changes.remark;
					var cooperate = Ext.isEmpty(changes.cooperate)
							? datas.cooperate
							: changes.cooperate;
					var level = Ext.isEmpty(changes.level)
							? datas.level
							: changes.level;
					Ext.Ajax.request({
								url : '../supp/updatesupp' + getSuffixRd(),
								method : 'post',
								async : false,
								params : {
									'id' : suppId,
									'supType' : supType,
									'supName' : supName,
									'contact' : contact,
									'post' : post,
									'tel1' : tel1,
									'tel2' : tel2,
									'fax' : fax,
									'email' : email,
									'item' : item,
									'remark' : remark,
									'cooperate' : cooperate,
									'level' : level
								},
								scope : this,
								success : function(response) {
									var json = response.responseText;
									var respObj = Ext.util.JSON.decode(json);
									if (!respObj.success) {
										Ext.Msg.alert("提示", respObj.message);
									}
									// 页面提交
									record.commit();
									return;
								},
								failure : function() {
									Ext.Msg.alert("提示", "更新失败");
									// 还原数据
									record.reject();
									return;
								}
							});
					store.load();
				}
			});
	// 导入excel文件窗口
	var importWin;
	// 导入excelForm
	var importAccForm = new Ext.form.FormPanel({
		labelWidth : 60,
		fileUpload : true,
		frame : true,
		bodyStyle : 'padding: 10px',
		defaults : {
			anchor : '95%',
			allowBlank : false,
			msgTarget : 'side'
		},
		items : [{
					xtype : 'fileuploadfield',
					id : 'uploadFile',
					emptyText : '请选择数据文件(.xlsx)',
					fieldLabel : '数据文件',
					name : 'file',
					buttonText : '···'
				}],
		buttons : [{
			text : '导入',
			handler : function() {
				if (importAccForm.getForm().isValid()) {
					var uploadForm = Ext.getCmp('uploadFile');
					var fileName = uploadForm.value;
					var extName = /\.[^\.]+$/.exec(fileName);
					if (extName != '.xlsx') {
						Ext.Msg.alert('提示,', '请导入.xlsx文件,目前只支持Office2007以上版本 ');
						importAccForm.getForm().reset();
						return;
					}
					importAccForm.getForm().submit({
						url : '../supp/uploadsupp?_time='
								+ new Date().getTime(),
						method : 'POST',
						waitMsg : '上传中...',
						timeout : 600000,
						success : function(form, obj) {
							var count = obj.result.count;
							Ext.Msg.alert('提示,', '成功导入:' + count + '条记录 ');
							form.reset();
							sinaUserStore.load();
						},
						failure : function(tform, action) {
							if (action.failureType === Ext.form.Action.CONNECT_FAILURE) {
								Ext.Msg.alert('连接错误', '状态:'
												+ action.response.status + ': '
												+ action.response.statusText);
							}
							if (action.failureType === Ext.form.Action.SERVER_INVALID) {
								Ext.Msg.alert('服务无效', action.result);
							}
							tform.reset();
						}
					});
					importWin.hide();
				}
			}
		}, {
			text : '重置',
			handler : function() {
				importAccForm.getForm().reset();
			}
		}]
	});
	var supplierGrid = new Ext.grid.GridPanel({
				store : store,
				height : 500,
				autoWidth : true,
				autoScroll : true,
				stripeRows : true,
				frame : true,
				region : 'center',
				margins : '0 5 5 5',
				plugins : [editor],
				tbar : [{
							text : '刷新',
							iconCls : 'arrow_refreshIcon',
							handler : function() {
								store.reload();
							}
						}, '-', new Ext.form.TextField({
									id : 'searchFullText',
									name : 'searchFullText',
									emptyText : '请输入关键字',
									enableKeyEvents : true,
									listeners : {
										specialkey : function(field, e) {
											if (e.getKey() == Ext.EventObject.ENTER) {
												searchSuppliers();
											}
										}
									},
									width : 130
								}), {
							text : '查询',
							iconCls : 'previewIcon',
							handler : function() {
								searchSuppliers();
							}
						}, '-', {
							iconCls : 'page_addIcon',
							text : '添加一条记录',
							handler : function() {
								var supp = new Supplier({
											supType : '',
											supName : '',
											contact : '',
											post : '',
											tel1 : '',
											tel2 : '',
											fax : '',
											email : '',
											item : '',
											remark : '',
											cooperate : '',
											level : ''
										});
								editor.stopEditing();
								// TODO add
								store.insert(0, supp);
								supplierGrid.getView().refresh();
								supplierGrid.getSelectionModel().selectRow(0);
								editor.startEditing(0);
							}
						}, {
							ref : '../removeBtn',
							iconCls : 'page_delIcon',
							text : '删除一条记录',
							disabled : true,
							handler : function() {
								var delArr = [];
								editor.stopEditing();
								var selects = supplierGrid.getSelectionModel()
										.getSelections();
								if (Ext.isEmpty(selects)) {
									Ext.MessageBox.alert('提示', '请选择一行记录');
									return;
								}
								for (var i = 0, r; r = selects[i]; i++) {
									var rowdata = r.data;
									delArr[i] = rowdata.id;
								}
								return;
								var row = select.data;
								var id = row.id;
								Ext.Msg.show({
											title : '确认信息',
											msg : '确定删除?',
											buttons : Ext.Msg.YESNO,
											fn : function(ans) {
												if (ans == 'yes') {
													if (deleteSuppliers(delArr)) {
														store.load();
													} else {
														Ext.MessageBox.alert(
																'提示', '删除失败');
														store.load()
														return;
													}
												}
											}
										});
							}
						}, '-', {
							text : 'Excel导入数据',
							iconCls : 'uploadIcon',
							handler : function() {
								if (!importWin) {
									importWin = new Ext.Window({
												title : '批量导入',
												layout : 'fit',
												width : 400,
												height : 140,
												closeAction : 'hide',
												plain : true,
												items : [importAccForm]
											});
									importWin.on('show', function() {
												importAccForm.getForm().reset();
											});
								}
								importWin.show(this);
							}
						}],

				columns : [new Ext.grid.RowNumberer(), {
							id : 'ID',
							header : '内部编号',
							dataIndex : 'id',
							width : 80,
							sortable : true
						}, {
							id : 'supType',
							header : '类型',
							dataIndex : 'supType',
							width : 120,
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'supName',
							header : '公司名称',
							dataIndex : 'supName',
							width : 120,
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'contact',
							header : '联系人',
							dataIndex : 'contact',
							width : 100,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'post',
							header : '职务',
							dataIndex : 'post',
							width : 100,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'tel1',
							header : '电话1',
							dataIndex : 'tel1',
							width : 120,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'tel2',
							header : '电话2',
							dataIndex : 'tel2',
							width : 120,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'fax',
							header : '传真',
							dataIndex : 'fax',
							width : 120,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'email',
							header : 'Email',
							dataIndex : 'email',
							width : 120,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'item',
							header : '产品',
							dataIndex : 'item',
							width : 150,
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'remark',
							header : '备注',
							dataIndex : 'remark',
							width : 150,
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'cooperate',
							header : '合作过的项目',
							dataIndex : 'cooperate',
							width : 150,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}, {
							id : 'level',
							header : '推荐等级',
							dataIndex : 'level',
							width : 120,
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : true
							}
						}],
				bbar : bbar
			});
	supplierGrid.getSelectionModel().on('selectionchange', function(sm) {
				supplierGrid.removeBtn.setDisabled(sm.getCount() < 1);
			});

	var viewport = new Ext.Viewport({
				layout : 'border',
				items : [supplierGrid]
			});
	/**
	 * 删除一条记录
	 */
	function deleteSuppliers(arr) {
		var flag = false;
		if (Ext.isEmpty(arr)) {
			return;
		}
		Ext.Ajax.request({
					url : '../supp/deletesupp' + getSuffixRd(),
					async : false,
					params : {
						'ids' : arr
					},
					success : function(response) {
						var result = Ext.decode(response.responseText);
						flag = result.success;
					},
					failure : function() {
					}
				});
		return flag;
	}
	/**
	 * 全文检索
	 */
	function searchSuppliers() {
		store.load({
					params : {
						start : 0,
						limit : bbar.pageSize,
						search : Ext.getCmp('searchFullText').getValue()
					}
				});
	}
});